

local params=table();
params.data=table();
params.add=function(name)
{
	local v=table();
	this.data[name]=v;
	return v;
};


local pm;
local fn;

fn=function(op,km,v)
{
	km.add("label"		,km.ld(8).label(translate2(v.label)));	
	local f = km.IWND_BIND_PARENT;
	if (v.readonly) f |= km.IWND_READONLY;	
	km.add("textctrl"	,km.ld(9).name(op.prefix..v.name).flags(f).tooltip(v.tooltip));
};

pm=params.add("string");
pm.make_ctrl=fn;


pm=params.add("double");
pm.make_ctrl=fn;


pm=params.add("expr");
pm.make_ctrl=fn;


pm=params.add("hidden");
pm.make_ctrl=function(op,km,v)
{
	//km.add("hidden"	,km.ld(9).name(op.prefix..v.name));
};


fn=function(op,km,v)
{
	km.ld(9).sv(99);
	if(v.optdata!=nil)
	{
		local arr=v.optdata;
		km.ld(99).nprops("rows",v.optdata[0]).sv(99);
		km.ld(99).nprops("cols",v.optdata[1]).sv(99);
		km.ld(99).sprops("row_labels",v.optdata[2]).sv(99);
		km.ld(99).sprops("col_labels",v.optdata[3]).sv(99);
		km.ld(99).nprops("no_direct_edit",v.optdata[4]).sv(99);
	}
	
	km.add("label"	,km.ld(8).label(translate2(v.label)));
	km.add("array_edit"	,km.ld(99).name(op.prefix..v.name).tooltip(v.tooltip));
};


pm=params.add("array");
pm.make_ctrl=fn;


	
fn=function(op,km,v)
{
	km.add("label"		,km.ld(8).label(translate2(v.label)));
	km.add(v.type	,km.ld(9).name(op.prefix..v.name).sprops("options",v.options).bitmask(v.limit||0).tooltip(v.tooltip));
};

pm=params.add("arraysel");
pm.make_ctrl=fn;

pm=params.add("arraychk");
pm.make_ctrl=fn;


fn=function(op,km,v)
{
	km.add("label"		,km.ld(8).label(translate2(v.label)));

	if(!is_nil(v.optdata))
	{
		km.add("combo"	,km.ld(9).name(op.prefix..v.name).optdata(op.prefix..v.name..".optdata").flags(km.IWND_READONLY|km.IWND_BIND_PARENT).tooltip(v.tooltip));			
	}
	else
	{
		km.add("textctrl"	,km.ld(9).name(op.prefix..v.name).tooltip(v.tooltip));
	}
};

pm=params.add("integer");
pm.make_ctrl=fn;

fn=function(op,km,v)
{
	km.add("label"		,km.ld(8).label(translate2(v.label)));

	if(!is_nil(v.optdata))
	{
		km.add("slider"	,km.ld(9).name(op.prefix..v.name).optdata(op.prefix..v.name..".optdata").flags(km.IWND_READONLY|km.IWND_BIND_PARENT).tooltip(v.tooltip));			
	}
	else
	{
		km.add("textctrl"	,km.ld(9).name(op.prefix..v.name).tooltip(v.tooltip));
	}
};

pm=params.add("integer.slider");
pm.make_ctrl=fn;

fn=function(op,km,v)
{
	km.add("button"			,km.ld(2).name(op.prefix..v.name).label(translate2(v.label)));
};

pm=params.add("button");
pm.make_ctrl=fn;

fn=function(op,km,v)
{
	km.add("label"		,km.ld(8).label(translate2(v.label)));
	km.add("checkbox"	,km.ld(9).name(op.prefix..v.name).tooltip(v.tooltip));
};


pm=params.add("checkbox");
pm.make_ctrl=fn;

pm=params.add("boolean");
pm.make_ctrl=fn;


fn=function(op,km,v)
{
	km.add("label"		,km.ld(8).label(translate2(v.label)));
	km.add("filectrl"	,km.ld(9).name(op.prefix..v.name).style(16).exts("cad,stl,stp,igs,all").sprops("fchk","fchk.transfer_cad_file").tooltip(v.tooltip));	
};

pm=params.add("model");
pm.make_ctrl=fn;

fn=function(op,km,v)
{
	km.add("label"		,km.ld(8).label(translate2(v.label)));
	km.add("filectrl"	,km.ld(9).name(op.prefix..v.name).style(16).tooltip(v.tooltip));	
};

pm=params.add("file");
pm.make_ctrl=fn;



return params;